perm filename TIMER.MAC[11,HE]1 blob sn#656331 filedate 1982-04-29 generic text, type T, neo UTF8
; Copyright Xerox Corporation 1979
        .TITLE    TIMER
        .DSABL    GBL

	.CSECT	GLOBAL
G=.
.=G+122.+122.
	.WORD	SETTIM
	.WORD	TIMHEX
	.WORD	DISMIS

	.CSECT

BLOCK=G+127.+127.
BINCLK=G+135.+135.	       ;EACH COUNT = 100 MSEC

;
;SUBROUTINE SETTIMER(LVTIMER,DELTA)
;
SETTIM::
      ASL      R1
      ADD      BINCLK,R2        ;ADD BINCLK TO DELTA
      MOV      R2,@R1           ;STORE RESULT IN LVTIMER
;
      ADD      #2,0(SP)         ;
      RTS      PC               ;RETURN

      .PAGE
;
;SUBROUTINE TIMERHASEXPIRED(LVTIMER) = TRUE/FALSE
;
;
;RETURN IN R1:
;      TRUE  = EXPIRED
;      FALSE = NOT EXPIRED
;
TIMHEX::
        ASL     R1
        CMP     @R1,BINCLK      ;IS IT TIMED OUT?
        BHI     NOTIM           ;NO, BRANCH
TIM:
        MOV     #177777,R1      ;RESULTIS TRUE
        BR      TIEX
NOTIM:
        BVS     TIM
        CLR     R1              ;RESULTIS FALSE
TIEX:
        ADD     #2,0(SP)
        RTS     PC              ;RETURN
	.PAGE
;
;SUBROUTINE DISMISS(DELTA)
;
DISMIS::
	SUB	@0(SP),R0	;STANDARD
	MOV	(SP)+,-(R0)	;	ENTRY CODE
	MOV	R1,R2		;R2 = DELTA
	TST	-(R0)		;PUSH STACK
	MOV	R0,R1
	CLC
	ROR	R1		;R1 = LV TIMER
	JSR	PC,SETTIM	;
	.WORD	0
DILOOP:
	JSR	PC,@BLOCK	;BLOCK
	.WORD	0		;UNTIL
	MOV	R0,R1		;TIMER
	CLC			;HAS
	ROR	R1		;
	JSR	PC,TIMHEX	;EXPIRED
	.WORD	0
	TST	R1		;EXPIRED?
	BEQ	DILOOP		;NO, TRY AGAIN
	TST	(R0)+		;POP STACK
	MOV	(R0)+,R5	;STANDARD EXIT CODE
	ADD	(R5)+,R0
	JMP	(R5)
        .END